home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh
- # /etc/init.d/sysklogd: start the system log daemon.
-
- ### BEGIN INIT INFO
- # Provides: sysklogd
- # Required-Start: $local_fs $time
- # Required-Stop: $local_fs $time
- # Should-Start: $network
- # Should-Stop: $network
- # Default-Start: 2 3 4 5
- # Default-Stop: 1
- # Short-Description: System logger
- ### END INIT INFO
-
- PATH=/bin:/usr/bin:/sbin:/usr/sbin
-
- pidfile=/var/run/syslogd.pid
- binpath=/sbin/syslogd
-
- test -x $binpath || exit 0
-
- # syslogd options should be set in /etc/default/syslogd
- SYSLOGD=""
-
- # user to run syslogd as - this can overriden in /etc/default/syslogd
- USER="syslog"
-
- test ! -r /etc/default/syslogd || . /etc/default/syslogd
-
- # allow ltsp to override
- test ! -r /etc/ltsp/syslogd || . /etc/ltsp/syslogd
-
- # Figure out under which user syslogd should be running as
- if echo ${SYSLOGD} | grep -q '^.*-u[[:space:]]*\([[:alnum:]]*\)[[:space:]]*.*$'
- then
- # A specific user has been set on the command line, try to extract it.
- USER=$(echo ${SYSLOGD} | sed -e 's/^.*-u[[:space:]]*\([[:alnum:]]*\)[[:space:]]*.*$/\1/')
- else
- # By default, run syslogd under the syslog user
- SYSLOGD="${SYSLOGD} -u ${USER}"
- fi
-
- # Unable to get the user under which syslogd should be running, stop.
- if [ -z "${USER}" ]
- then
- log_failure_msg "Unable to get syslog user"
- exit 1
- fi
-
- . /lib/lsb/init-functions
-
- create_xconsole()
- {
- # Only proceed if /dev/xconsole is used at all
- if ! grep -q '^[^#].*/dev/xconsole' /etc/syslog.conf
- then
- return
- fi
-
- if [ ! -e /dev/xconsole ]; then
- mknod -m 640 /dev/xconsole p
- else
- chmod 0640 /dev/xconsole
- fi
-
- chown ${USER}:adm /dev/xconsole
- test ! -x /sbin/restorecon || /sbin/restorecon /dev/xconsole
-
- }
-
- fix_log_ownership()
- {
- for l in `syslogd-listfiles -a`
- do
- chown ${USER}:adm $l
- done
- }
-
- running()
- {
- # No pidfile, probably no daemon present
- #
- if [ ! -f $pidfile ]
- then
- return 1
- fi
-
- pid=`cat $pidfile`
-
- # No pid, probably no daemon present
- #
- if [ -z "$pid" ]
- then
- return 1
- fi
-
- if [ ! -d /proc/$pid ]
- then
- return 1
- fi
-
- cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1`
-
- # No syslogd?
- #
- if [ "$cmd" != "$binpath" ]
- then
- return 1
- fi
-
- return 0
- }
-
- case "$1" in
- start)
- log_begin_msg "Starting system log daemon..."
- create_xconsole
- fix_log_ownership
- start-stop-daemon --start --quiet --pidfile $pidfile --name syslogd --startas $binpath -- $SYSLOGD
- log_end_msg $?
- ;;
- stop)
- log_begin_msg "Stopping system log daemon..."
- start-stop-daemon --stop --quiet --pidfile $pidfile --name syslogd
- log_end_msg $?
- ;;
- reload|force-reload)
- log_begin_msg "Reloading system log daemon..."
- fix_log_ownership
- start-stop-daemon --stop --quiet --signal 1 --pidfile $pidfile --name syslogd
- log_end_msg $?
- ;;
- restart)
- log_begin_msg "Restarting system log daemon..."
- start-stop-daemon --stop --retry 5 --quiet --pidfile $pidfile --name syslogd
- fix_log_ownership
- start-stop-daemon --start --quiet --pidfile $pidfile --name syslogd --startas $binpath -- $SYSLOGD
- log_end_msg $?
- ;;
- reload-or-restart)
- if running
- then
- $0 reload
- else
- $0 start
- fi
- ;;
- status)
- status_of_proc -p $pidfile $binpath syslogd && exit 0 || exit $?
- ;;
- *)
- log_success_msg "Usage: /etc/init.d/sysklogd {start|stop|reload|restart|force-reload|reload-or-restart|status}"
- exit 1
- esac
-
- exit 0
-